home *** CD-ROM | disk | FTP | other *** search
- unit CDIBs;
-
- //-----------------------------------------------
- // Provides a class for handling DIBs before displaying them.
- // TBitmap on the other hand always realizes the palettes and converts the DIB
- // to a DDB.
- //
- // Author: Lubomir Antonov
- //-----------------------------------------------
-
- interface
-
- uses Windows, Classes, Graphics, Clipbrd;
-
- type
- // Internal class to hold the image data
- TDIBImage = class
- private
- FRefCount: Integer;
- FMemoryImage: TCustomMemoryStream;
- FWidth: Integer;
- FHeight: Integer;
- FDIBHeader: Pointer;
- //FDIBClrTable: Pointer;
- FDIBBits: Pointer;
- FMonochrome: Boolean;
- procedure Reference;
- procedure Release;
- procedure FreeHandle;
- end;
-
- TDIB = class( TGraphic )
- private
- FImage: TDIBImage;
- procedure FreeContext;
- procedure AssignFromDIB( Source: TDIB );
- procedure AssignFromClipboard( Source: TClipboard );
- procedure AssignFromBitmap( Source: TBitmap );
- procedure AssignToBitmap( Dest: TBitmap );
- procedure InitBIFromBC( var BI: TBitmapInfoHeader;
- var BC: TBitmapCoreHeader; ImageSize: Integer );
- procedure NewImage( NewWidth, NewHeight: Integer; NewMonochrome: Boolean;
- NewImage: TCustomMemoryStream; NewDIBHeader, NewDIBBits: Pointer);
- procedure ReadStream( Size: Longint; Stream: TStream );
- procedure WriteStream( Stream: TStream; WriteSize: Boolean );
- procedure LoadDataFromStream( Stream: TStream );
- function GetMonochrome: Boolean;
- procedure SetMonochrome( Value: Boolean );
- function CopyHeader( Image: TMemoryStream; AWidth, AHeight: Integer ):
- LongInt;
- procedure CopyImage( ALeft, ATop, AWidth, AHeight: Integer;
- AMonochrome: Boolean );
- protected
- procedure AssignTo( Dest: TPersistent ); override;
- function GetEmpty: Boolean; override;
- function GetHeight: Integer; override;
- function GetWidth: Integer; override;
- procedure SetWidth(Value: Integer); override;
- procedure SetHeight(Value: Integer); override;
- procedure ReadData( Stream: TStream ); override;
- procedure WriteData( Stream: TStream ); override;
- function CreateStockPalette: HPALETTE;
- public
- constructor Create; override;
- destructor Destroy; override;
- procedure Assign( Source: TPersistent ); override;
- procedure LoadFromClipboardFormat( AFormat: Word; AData: THandle;
- APalette: HPALETTE ); override;
- procedure LoadFromStream( Stream: TStream ); override;
- procedure LoadFromResourceName( Instance: THandle; const ResName: String );
- procedure LoadFromResourceID( Instance: THandle; ResID: Integer );
- procedure SaveToClipboardFormat( var AFormat: Word; var AData: THandle;
- var APalette: HPALETTE ); override;
- procedure SaveToStream( Stream: TStream ); override;
- procedure CopySection( ALeft, ATop, AWidth, AHeight: Integer );
- function CanConvert16to24: Boolean;
- procedure Convert16to24;
- function DIBToBitmap( Pal: HPALETTE ): HBITMAP;
- property Monochrome: Boolean read GetMonochrome write SetMonochrome;
- end;
-
- implementation
-